import NameMark from './nameMark'

// 法宝
export default {
  // 法宝字段
  fields: {
    name: '',// 名称
    level: 1, // 等级
    levelName:'',// 等级名称
    hpBuff: 0, // 血量加成
    hotBuff: 0, // 回血速度加成
    travelSpeedBuff: 0, // 历练速度加成
    levelUpOddsBuff: 0, // 突破概率
  },
  template: [
    {
      level: 0, // 等级
      odds: 5, // 生成权重
      hpBuff: 10, // 血量加成
      hotBuff: 5, // 回血速度加成
      travelSpeedBuff: 2, // 历练速度加成
      levelUpOddsBuff: 1, // 突破概率
      attrCount:1,
    }, {
      level: 1, // 等级
      odds: 4, // 生成权重
      hpBuff: 10, // 血量加成
      hotBuff: 25, // 回血速度加成
      travelSpeedBuff: 10, // 历练速度加成
      levelUpOddsBuff: 2, // 突破概率
      attrCount:2,
    }, {
      level: 2, // 等级
      odds: 3, // 生成权重
      hpBuff: 1000, // 血量加成
      hotBuff: 50, // 回血速度加成
      travelSpeedBuff: 10, // 历练速度加成
      levelUpOddsBuff: 3, // 突破概率
      attrCount:3,
    }, {
      level: 3, // 等级
      odds: 1, // 生成权重
      hpBuff: 10000, // 血量加成
      hotBuff: 250, // 回血速度加成
      travelSpeedBuff: 10, // 历练速度加成
      levelUpOddsBuff: 4, // 突破概率
      attrCount:4,
    }],

  levelName:[
    "凡","灵","仙","神"
  ],


  // 生成模版
  __generateArmsTemplate() {
    const template = this.template;
    let sum = 0;
    template.forEach((v) => {
      sum += v.odds
    });
    const rand = Math.round(Math.random() * (sum - 1));

    let key = 0;
    let tem = 0;

    for (let i =0;i<template.length;i++){
      if (rand < template[i].odds + tem) {
        key = i;
        break;
      }
      tem += template[i].odds
    }

    return this.template[key];
  },

  // 生成属性
  __generateArmsAttr(template) {
    let temArms = JSON.parse(JSON.stringify(this.fields));

    // console.log( temArms)
    // 必加属性
    temArms.level = template.level;
    temArms.levelName = this.levelName[temArms.level];

    // 单属性
    // for (let i = 0; i < template.attrCount ; i++) {
      let rand = Math.floor(Math.random() * 4);
      switch (rand) {
        case 0:
          temArms.hpBuff = template.hpBuff
          break;
        case 1:
          temArms.hotBuff = template.hotBuff
          break;
        case 2:
          temArms.travelSpeedBuff = template.travelSpeedBuff
          break;
        default:
          temArms.levelUpOddsBuff = template.levelUpOddsBuff
      }
    // }

    return temArms;
  },

  // 生成法宝
  generateArms() {
    // 生成模版
    let template = this.__generateArmsTemplate();
    // 生成名称
    let name = NameMark.generateArmsName();
    // 生成attr
    let arms = this.__generateArmsAttr(template);
    arms.name = name;

    return arms
  }
}
